package com.cloud.custom.tasklist.service;

import java.util.List;

import com.cloud.custom.common.result.QkTreeNode;
import com.cloud.custom.tasklist.bean.MenuTabAuthority;
import com.cloud.custom.tasklist.bean.Part;
import com.cloud.custom.tasklist.bean.TabMenuHeader;
import com.cloud.custom.tasklist.bean.TaskListTabMenuBean;
import com.cloud.custom.tasklist.entity.TaskListTab;
import com.cloud.custom.tasklist.entity.TaskListTabGroup;
import com.cloud.custom.tasklist.entity.TaskListTabMenu;

public interface TaskListTabService {

	/**
	 * 获取分组树
	 * 
	 * @return
	 */
	List<QkTreeNode> listTree();

	/**
	 * 标签页菜单信息
	 * 
	 * @return
	 */
	List<TabMenuHeader> listTaskListTabMenus();

	/**
	 * 保存环节下Tab的权限
	 * 
	 * @param parts
	 * @param actDefId
	 */
	void saveUpdatePartAuth(List<MenuTabAuthority> parts, long actDefId, long taskListId);

	/**
	 * 获取指定环节下的参与者权限
	 * 
	 * @param actDefId
	 * @param parts
	 * @return
	 */
	List<Part> listPartAuthority(long taskListId, long actDefId, List<Part> parts);

	/**
	 * 获取当前用户可见的tab项目
	 * 
	 * @param taskListId
	 * @param actDefId
	 * @param parts
	 * @return
	 */
	List<TaskListTab> listTaskListPartByPart(long taskListId, long actDefId, List<Long> parts);

	/**
	 * 保存更新分组
	 * 
	 * @param group
	 * @return
	 */
	TaskListTabGroup saveUpdateGroup(TaskListTabGroup group);

	/**
	 * 刪除面板分組
	 * 
	 * @param groupId
	 */

	void deleteGroup(long groupId);

	/**
	 * 保存或更新面板信息
	 * 
	 * @param tab
	 * @return
	 */
	TaskListTab saveUpdateTaskListTab(TaskListTab tab);

	/**
	 * 删除面板
	 * 
	 * @param menuId
	 * @return
	 */
	long deleteTab(long tabId);

	/**
	 * 
	 * @param menuId
	 * @return
	 */
	TaskListTab loadTab(long tabId);

	List<TaskListTab> getTabList(Long taskListId, Long actDefId, Long partId);

	List<TaskListTabMenu> getTabMenuList(Long tabId, Long taskListId, Long actDefId, Long partId);

	void saveTabPart(TaskListTabMenuBean param);

	void saveTabPartMenu(TaskListTabMenuBean param);

}
